#include "stdio.h"
#include "stdlib.h"
#include "pthread.h"
#include "unistd.h"

void *thread_fun(void *arg)
{
    printf("子线程开始执行\n");
    sleep(5);
    printf("子线程结束执行\n");
    return NULL;
}

int main()
{
    printf("主线程开始\n");
    pthread_t pt;
    // 创建线程
    pthread_create(&pt, NULL, thread_fun, NULL);
    // 主线程等待1秒
    sleep(1);
    // 取消分线程
    pthread_cancel(pt);
    void *result;
    // 等待分线程结束
    pthread_join(pt, &result);
    // 判断分线程是否被取消结束
    if (result == PTHREAD_CANCELED) {
        printf("task线程被取消结束\n");
    } else {
        printf("task线程正常结束\n");
    }

    printf("主线程结束\n");
    return 0;
}